;	����������� ��������� ������� ��������� 'Hello.' ��� ������� F1 � ������������ ��� ������� F2.
;------------------------------------------------------------------------------------------------------
;
	absolute 2ch			;��������� ���� ����� �������� 2ch
Blocokr	resw	1			;�����-������� ����� ���������
	segment	code			;����������� ������� ����
	org	100h
Start:	jmp	Init			;������� �� �������������
Begin:	sti				;��������� ����������� ����������
	push	ax			;���������� ����������� ��������� � �����
	push	dx
	push	ds
	push	es
	pushf
	mov	ax,cs			;DS � ES ����� ���������� ������ ����������� ���������
	mov	ds,ax
	mov	es,ax

	pushf				;�������� � ���� �����, CS � ����� ��������� �������
	push	cs
	push	.M
	jmp	far	[Old]		;�������� ������� ����������

.M:	mov	ah,01h			;�������� ������ �� ���������� ������
	int	16h
	jz	.Exit			;���� ������� ��� �� �� �����

	cmp	al,0			;���� ������ �� �����������
	jne	.Exit			; �� �� �����

	cmp	ah,3Bh			;���� ������ ����� F1
	je	.Msg			; �� ������� ���������

	cmp	ah,3Ch			;���� ������ �� ����� F2
	jne	.Exit			; �� �� �����

	mov	ax,0000h		;�������� ������ �� ���������� ������
	int	16h
	mov	ax,2509h		;�������� ������� ���������� � ������ 9
	mov	dx,[Old]
	mov	ds,[Old+2]
	int	21h
	push	cs			;����������� ������
	pop	es
	mov	ax,4900h
	int	21h
	jmp	.Exit

.Msg:	mov	ax,0000h		;�������� ������ �� ���������� ������
	int	16h
	mov	ah,09h			;������� ���������
	mov	dx,Msg
	int	21h

.Exit:	popf				;�������������� ���������
	pop	es
	pop	ds
	pop	dx
	pop	ax
	iret   				;������� �� ����������
Msg	db	'Hello.', 0ah, 0dh, '$' ;��������� ���������
Old	dd	0			;������� ���������� ������� ����������

Init:	mov	ax,3509h		;���������� �������� �����������
	int	21h			; ������� 9 � ��������� ES � BX
	mov	[Old],bx		;� ����� � ���� Old
	mov	[Old+2],es
	mov	ax,2509h		;������ ���������� ������ �����������
	mov	dx,Begin		; � ������ ����������
	int	21h                     ; � ������� 9
	mov	ah,49h			;������������ ������� ������
	mov	es,[Blocokr]		; ����������
	int	21h			; ������ ���������
	mov	dx,Init			;������� � DOS, ���������
	int	27h			; �����������.